home *** CD-ROM | disk | FTP | other *** search
- ;*---------------------------------------------------------------------------
- ; :Version. $Id: qa.asm 1.10 2003/12/04 08:12:03 wepl Exp wepl $
- ;---------------------------------------------------------------------------*
-
- INCDIR Includes:
- INCLUDE whdload.i
- INCLUDE whdmacros.i
-
- OUTPUT "QA.Slave"
- BOPT O+ ;enable optimizing
- BOPT OG+ ;enable optimizing
- BOPT ODg- ;disable jsr+rts optimizing
- BOPT w4- ;disable 64k warnings
- BOPT wo- ;disable optimize warnings
- SUPER
- MC68040
-
- BASEMEM = $40000
- ;BASEMEMREAL = $41000
- ;BASEMEMREAL = $200000
- IFND BASEMEMREAL
- BASEMEMREAL = BASEMEM
- ENDC
- EXPMEM = $10000
-
- SAVREG = $200 ;memory to save registers for modified check
- HRTMON ;remove write protection from whdload
-
- ;======================================================================
-
- _base SLAVE_HEADER ;ws_Security + ws_ID
- dc.w 15 ;ws_Version
- dc.w WHDLF_NoError ;ws_flags
- dc.l BASEMEMREAL ;ws_BaseMemSize
- dc.l 0 ;ws_ExecInstall
- dc.w _start-_base ;ws_GameLoader
- dc.w 0 ;ws_CurrentDir
- dc.w 0 ;ws_DontCache
- dc.b 0 ;ws_keydebug = F9
- dc.b $59 ;ws_keyexit = F10
- _expmem dc.l EXPMEM ;ws_ExpMem
- dc.w _name-_base ;ws_name
- dc.w _copy-_base ;ws_copy
- dc.w _info-_base ;ws_info
-
- _name dc.b "Quality Assurance Slave",0
- _copy dc.b "Wepl",0
- _info dc.b "done by Wepl "
- DOSCMD "WDate >T:date"
- INCBIN "T:date"
- dc.b -1
- dc.b "$Id: qa.asm 1.10 2003/12/04 08:12:03 wepl Exp wepl $"
- dc.b 0
- _badcustom1 dc.b "value of Custom1/N is invalid",0
- EVEN
-
- _tags dc.l WHDLTAG_CUSTOM1_GET
- _custom1 dc.l 0
- IFD HRTMON
- dc.l WHDLTAG_Private4
- dc.l -1
- ENDC
- dc.l 0
-
- ;======================================================================
- _start ; A0 = resident loader
- ;======================================================================
-
- move.l a0,a4 ;A4 = resload
- lea (_ciaa),a5 ;A5 = ciaa
- lea (_custom),a6 ;A6 = custom
- ;ssp in fast but not on first or last page because
- ;resload_Protect
- move.l (_expmem),a7
- add.l #EXPMEM-$2000,a7
-
- ;init memory at upper chipmem bound because written by WHDLoad
- ;during calling the slave
- lea BASEMEMREAL-128,a0
- moveq #128/4-2,d0
- move.l (a0)+,d1
- .clr move.l d1,(a0)+
- dbf d0,.clr
- sub.l a0,a0
- move.l d1,(a0)+
- move.l d1,(a0)+
-
- lea _tags,a0
- jsr (resload_Control,a4)
-
- move.l _custom1,d0
- beq .bad
- lea _table,a0
- .loop move.l (a0)+,d1
- move.w (a0)+,d2
- cmp.l d0,d1
- beq .found
- tst.w d2
- bne .loop
-
- .bad pea _badcustom1
- pea TDREASON_FAILMSG
- jmp (resload_Abort,a4)
-
- .found jsr (_table,pc,d2.w)
-
- pea TDREASON_OK
- jmp (resload_Abort,a4)
-
- ;======================================================================
-
- TAB MACRO
- dc.l \1
- dc.w \2-_table
- ENDM
-
- _table ; first line without TAB becuse perl parsing!
-
- ;TDREASON_#? ;options for WHDLoad
-
- TAB 1000,_bltsiz_0 ;OK ;SnoopOCS ChkBltSize
- TAB 1001,_bltsiz_1a ;BLITSIZE,DMA-A ;SnoopOCS ChkBltSize
- TAB 1002,_bltsiz_2a ;BLITSIZE,DMA-A ;SnoopOCS ChkBltSize
- TAB 1003,_bltsiz_3a ;BLITSIZE,DMA-A ;SnoopOCS ChkBltSize
- TAB 1004,_bltsiz_4a ;BLITSIZE,DMA-A ;SnoopOCS ChkBltSize
- TAB 1005,_bltsiz_5a ;BLITSIZE,DMA-A ;SnoopOCS ChkBltSize
- TAB 1006,_bltsiz_6a ;BLITSIZE,DMA-A ;SnoopOCS ChkBltSize
- TAB 1007,_bltsiz_7a ;BLITSIZE,DMA-A ;SnoopOCS ChkBltSize
- TAB 1008,_bltsiz_8a ;BLITSIZE,DMA-A ;SnoopOCS ChkBltSize
- TAB 1009,_bltsiz_9a ;BLITSIZE,DMA-A ;SnoopOCS ChkBltSize
- TAB 1010,_bltsiz_10a ;BLITSIZE,DMA-A ;SnoopOCS ChkBltSize
- TAB 1011,_bltsiz_11a ;BLITSIZE,DMA-A ;SnoopOCS ChkBltSize
- TAB 1012,_bltsiz_12a ;BLITSIZE,DMA-A ;SnoopOCS ChkBltSize
- TAB 1021,_bltsiz_1b ;BLITSIZE,DMA-B ;SnoopOCS ChkBltSize
- TAB 1022,_bltsiz_2b ;BLITSIZE,DMA-B ;SnoopOCS ChkBltSize
- TAB 1023,_bltsiz_3b ;BLITSIZE,DMA-B ;SnoopOCS ChkBltSize
- TAB 1024,_bltsiz_4b ;BLITSIZE,DMA-B ;SnoopOCS ChkBltSize
- TAB 1025,_bltsiz_5b ;BLITSIZE,DMA-B ;SnoopOCS ChkBltSize
- TAB 1026,_bltsiz_6b ;BLITSIZE,DMA-B ;SnoopOCS ChkBltSize
- TAB 1027,_bltsiz_7b ;BLITSIZE,DMA-B ;SnoopOCS ChkBltSize
- TAB 1028,_bltsiz_8b ;BLITSIZE,DMA-B ;SnoopOCS ChkBltSize
- TAB 1029,_bltsiz_9b ;BLITSIZE,DMA-B ;SnoopOCS ChkBltSize
- TAB 1030,_bltsiz_10b ;BLITSIZE,DMA-B ;SnoopOCS ChkBltSize
- TAB 1031,_bltsiz_11b ;BLITSIZE,DMA-B ;SnoopOCS ChkBltSize
- TAB 1032,_bltsiz_12b ;BLITSIZE,DMA-B ;SnoopOCS ChkBltSize
- TAB 1041,_bltsiz_1c ;BLITSIZE,DMA-C ;SnoopOCS ChkBltSize
- TAB 1042,_bltsiz_2c ;BLITSIZE,DMA-C ;SnoopOCS ChkBltSize
- TAB 1043,_bltsiz_3c ;BLITSIZE,DMA-C ;SnoopOCS ChkBltSize
- TAB 1044,_bltsiz_4c ;BLITSIZE,DMA-C ;SnoopOCS ChkBltSize
- TAB 1045,_bltsiz_5c ;BLITSIZE,DMA-C ;SnoopOCS ChkBltSize
- TAB 1046,_bltsiz_6c ;BLITSIZE,DMA-C ;SnoopOCS ChkBltSize
- TAB 1047,_bltsiz_7c ;BLITSIZE,DMA-C ;SnoopOCS ChkBltSize
- TAB 1048,_bltsiz_8c ;BLITSIZE,DMA-C ;SnoopOCS ChkBltSize
- TAB 1049,_bltsiz_9c ;BLITSIZE,DMA-C ;SnoopOCS ChkBltSize
- TAB 1050,_bltsiz_10c ;BLITSIZE,DMA-C ;SnoopOCS ChkBltSize
- TAB 1051,_bltsiz_11c ;BLITSIZE,DMA-C ;SnoopOCS ChkBltSize
- TAB 1052,_bltsiz_12c ;BLITSIZE,DMA-C ;SnoopOCS ChkBltSize
- TAB 1061,_bltsiz_1d ;BLITSIZE,DMA-D ;SnoopOCS ChkBltSize
- TAB 1062,_bltsiz_2d ;BLITSIZE,DMA-D ;SnoopOCS ChkBltSize
- TAB 1063,_bltsiz_3d ;BLITSIZE,DMA-D ;SnoopOCS ChkBltSize
- TAB 1064,_bltsiz_4d ;BLITSIZE,DMA-D ;SnoopOCS ChkBltSize
- TAB 1065,_bltsiz_5d ;BLITSIZE,DMA-D ;SnoopOCS ChkBltSize
- TAB 1066,_bltsiz_6d ;BLITSIZE,DMA-D ;SnoopOCS ChkBltSize
- TAB 1067,_bltsiz_7d ;BLITSIZE,DMA-D ;SnoopOCS ChkBltSize
- TAB 1068,_bltsiz_8d ;BLITSIZE,DMA-D ;SnoopOCS ChkBltSize
- TAB 1069,_bltsiz_9d ;BLITSIZE,DMA-D ;SnoopOCS ChkBltSize
- TAB 1070,_bltsiz_10d ;BLITSIZE,DMA-D ;SnoopOCS ChkBltSize
- TAB 1071,_bltsiz_11d ;BLITSIZE,DMA-D ;SnoopOCS ChkBltSize
- TAB 1072,_bltsiz_12d ;BLITSIZE,DMA-D ;SnoopOCS ChkBltSize
- TAB 1100,_bltsiz_0 ;OK ;SnoopOCS ChkBltSize ChkBltWait
- TAB 1200,_bltsizprot_0 ;OK ;SnoopOCS ChkBltSize
- TAB 1201,_bltsizprot_1 ;OK ;SnoopOCS ChkBltSize
- TAB 1202,_bltsizprot_2 ;OK ;SnoopOCS ChkBltSize
- TAB 1203,_bltsizprot_3 ;OK ;SnoopECS ChkBltSize
- TAB 1204,_bltsizprot_4 ;OK ;SnoopECS ChkBltSize
- TAB 1205,_bltsizprot_5 ;OK ;SnoopECS ChkBltSize
- TAB 1206,_bltsizprot_0 ;OK ;SnoopOCS ChkBltSize ChkBltWait
- TAB 1207,_bltsizprot_1 ;OK ;SnoopOCS ChkBltSize ChkBltWait
- TAB 1208,_bltsizprot_2 ;OK ;SnoopOCS ChkBltSize ChkBltWait
- TAB 1209,_bltsizprot_3 ;OK ;SnoopECS ChkBltSize ChkBltWait
- TAB 1210,_bltsizprot_4 ;OK ;SnoopECS ChkBltSize ChkBltWait
- TAB 1211,_bltsizprot_5 ;OK ;SnoopECS ChkBltSize ChkBltWait
- TAB 1220,_bltsizprot_20;BLITSIZE,Word Write,custom.bltsize ;SnoopOCS ChkBltSize
- TAB 1221,_bltsizprot_21;BLITSIZE,Long Write,custom.bltdptl ;SnoopOCS ChkBltSize
- TAB 31222,_bltsizprot_22;BLITSIZE,Word Write,custom.bltsize ;SnoopOCS ChkBltSize
- TAB 61222,_bltsizprot_22;BLITSIZE,Word Write,custom.bltdptl ;SnoopOCS ChkBltSize
- TAB 1223,_bltsizprot_23;BLITSIZE,Word Write,custom.bltsizh ;SnoopECS ChkBltSize
- TAB 1224,_bltsizprot_24;BLITSIZE,Long Write,custom.bltsizv ;SnoopECS ChkBltSize
- TAB 31225,_bltsizprot_25;BLITSIZE,Word Write,custom.bltsizh ;SnoopECS ChkBltSize
- TAB 61225,_bltsizprot_25;BLITSIZE,Word Write,custom.bltsizv ;SnoopECS ChkBltSize
- TAB 1226,_bltsizprot_20;BLITSIZE,Word Write,custom.bltsize ;SnoopOCS ChkBltSize ChkBltWait
- TAB 1227,_bltsizprot_21;BLITSIZE,Long Write,custom.bltdptl ;SnoopOCS ChkBltSize ChkBltWait
- TAB 31228,_bltsizprot_22;BLITSIZE,Word Write,custom.bltsize ;SnoopOCS ChkBltSize ChkBltWait
- TAB 61228,_bltsizprot_22;BLITSIZE,Word Write,custom.bltdptl ;SnoopOCS ChkBltSize ChkBltWait
- TAB 1229,_bltsizprot_23;BLITSIZE,Word Write,custom.bltsizh ;SnoopECS ChkBltSize ChkBltWait
- TAB 1230,_bltsizprot_24;BLITSIZE,Long Write,custom.bltsizv ;SnoopECS ChkBltSize ChkBltWait
- TAB 31231,_bltsizprot_25;BLITSIZE,Word Write,custom.bltsizh ;SnoopECS ChkBltSize ChkBltWait
- TAB 61231,_bltsizprot_25;BLITSIZE,Word Write,custom.bltsizv ;SnoopECS ChkBltSize ChkBltWait
- TAB 1240,_bltsizprot_40;BLITSIZE,Word Write,custom.bltsize ;SnoopOCS ChkBltSize
- TAB 1241,_bltsizprot_41;BLITSIZE,Long Write,custom.bltdptl ;SnoopOCS ChkBltSize
- TAB 31242,_bltsizprot_42;BLITSIZE,Word Write,custom.bltsize ;SnoopOCS ChkBltSize
- TAB 61242,_bltsizprot_42;BLITSIZE,Word Write,custom.bltdptl ;SnoopOCS ChkBltSize
- TAB 1243,_bltsizprot_43;BLITSIZE,Word Write,custom.bltsizh ;SnoopECS ChkBltSize
- TAB 1244,_bltsizprot_44;BLITSIZE,Long Write,custom.bltsizv ;SnoopECS ChkBltSize
- TAB 31245,_bltsizprot_45;BLITSIZE,Word Write,custom.bltsizh ;SnoopECS ChkBltSize
- TAB 61245,_bltsizprot_45;BLITSIZE,Word Write,custom.bltsizv ;SnoopECS ChkBltSize
- TAB 1246,_bltsizprot_40;BLITSIZE,Word Write,custom.bltsize ;SnoopOCS ChkBltSize ChkBltWait
- TAB 1247,_bltsizprot_41;BLITSIZE,Long Write,custom.bltdptl ;SnoopOCS ChkBltSize ChkBltWait
- TAB 31248,_bltsizprot_42;BLITSIZE,Word Write,custom.bltsize ;SnoopOCS ChkBltSize ChkBltWait
- TAB 61248,_bltsizprot_42;BLITSIZE,Word Write,custom.bltdptl ;SnoopOCS ChkBltSize ChkBltWait
- TAB 1249,_bltsizprot_43;BLITSIZE,Word Write,custom.bltsizh ;SnoopECS ChkBltSize ChkBltWait
- TAB 1250,_bltsizprot_44;BLITSIZE,Long Write,custom.bltsizv ;SnoopECS ChkBltSize ChkBltWait
- TAB 31251,_bltsizprot_45;BLITSIZE,Word Write,custom.bltsizh ;SnoopECS ChkBltSize ChkBltWait
- TAB 61251,_bltsizprot_45;BLITSIZE,Word Write,custom.bltsizv ;SnoopECS ChkBltSize ChkBltWait
- TAB 1260,_bltsizprot_d0;OK ;SnoopECS ChkBltSize
- TAB 1261,_bltsizprot_d1;BLITSIZE,Word Write,custom.bltsize ;SnoopECS ChkBltSize
- TAB 1262,_bltsizprot_d2;BLITSIZE,Word Write,custom.bltsize ;SnoopECS ChkBltSize
- TAB 1900,_bltwait_0 ;OK ;SnoopECS ChkBltWait
- TAB 1901,_bltwait_1 ;BLITWAIT,custom.bltcon0l ;SnoopECS ChkBltWait
- TAB 1902,_bltwait_1 ;BLITWAIT,custom.bltcon0l ;SnoopECS ChkBltSize ChkBltWait
- TAB 1903,_bltwait_3 ;BLITWAIT,custom.bltafwm ;SnoopOCS ChkBltWait
- TAB 1904,_bltwait_4 ;BLITWAIT,custom.bltafwm ;SnoopOCS ChkBltWait
- TAB 1905,_bltwait_5 ;BLITWAIT,custom.bltafwm ;SnoopOCS ChkBltWait
- TAB 1906,_bltwait_6 ;BLITWAIT,custom.bltafwm ;SnoopOCS ChkBltWait
- TAB 31907,_bltwait_7 ;ACCESSFAULT,custom.bltcon0l ;SnoopOCS ChkBltWait
- TAB 61907,_bltwait_7 ;ACCESSFAULT,custom.bltdpt ;SnoopOCS ChkBltWait
- TAB 31908,_bltwait_8 ;ACCESSFAULT,custom.bltsize ;SnoopOCS ChkBltWait
- TAB 61908,_bltwait_8 ;ACCESSFAULT,custom.bltdpt ;SnoopOCS ChkBltWait
- TAB 1909,_bltwait_9 ;ACCESSFAULT,custom.bltsizv ;SnoopOCS ChkBltWait
- TAB 1910,_bltwait_10 ;ACCESSFAULT,custom.bltsizv ;SnoopOCS ChkBltWait
- TAB 1911,_bltwait_11 ;ACCESSFAULT,custom.bltsizv ;SnoopOCS ChkBltWait
- TAB 1912,_bltwait_9 ;BLITWAIT,custom.bltafwm ;SnoopECS ChkBltWait
- TAB 1913,_bltwait_10 ;BLITWAIT,custom.bltafwm ;SnoopECS ChkBltWait
- TAB 1914,_bltwait_11 ;BLITWAIT,custom.bltafwm ;SnoopECS ChkBltWait
- TAB 1915,_bltwait_15 ;ACCESSFAULT,custom.bltcon0l ;SnoopECS ChkBltWait
- TAB 1916,_bltwait_16 ;ACCESSFAULT,custom.bltsize ;SnoopECS ChkBltWait
- TAB 1917,_bltwait_3 ;BLITWAIT,custom.bltafwm ;SnoopOCS ChkBltSize ChkBltWait
- TAB 1918,_bltwait_4 ;BLITWAIT,custom.bltafwm ;SnoopOCS ChkBltSize ChkBltWait
- TAB 1919,_bltwait_5 ;BLITWAIT,custom.bltafwm ;SnoopOCS ChkBltSize ChkBltWait
- TAB 1920,_bltwait_6 ;BLITWAIT,custom.bltafwm ;SnoopOCS ChkBltSize ChkBltWait
- TAB 31921,_bltwait_7 ;ACCESSFAULT,custom.bltcon0l ;SnoopOCS ChkBltSize ChkBltWait
- TAB 61921,_bltwait_7 ;ACCESSFAULT,custom.bltdpt ;SnoopOCS ChkBltSize ChkBltWait
- TAB 31922,_bltwait_8 ;ACCESSFAULT,custom.bltsize ;SnoopOCS ChkBltSize ChkBltWait
- TAB 61922,_bltwait_8 ;ACCESSFAULT,custom.bltdpt ;SnoopOCS ChkBltSize ChkBltWait
- TAB 1923,_bltwait_9 ;ACCESSFAULT,custom.bltsizv ;SnoopOCS ChkBltSize ChkBltWait
- TAB 1924,_bltwait_10 ;ACCESSFAULT,custom.bltsizv ;SnoopOCS ChkBltSize ChkBltWait
- TAB 1925,_bltwait_11 ;ACCESSFAULT,custom.bltsizv ;SnoopOCS ChkBltSize ChkBltWait
- TAB 1926,_bltwait_9 ;BLITWAIT,custom.bltafwm ;SnoopECS ChkBltSize ChkBltWait
- TAB 1927,_bltwait_10 ;BLITWAIT,custom.bltafwm ;SnoopECS ChkBltSize ChkBltWait
- TAB 1928,_bltwait_11 ;BLITWAIT,custom.bltafwm ;SnoopECS ChkBltSize ChkBltWait
- TAB 1929,_bltwait_15 ;ACCESSFAULT,custom.bltcon0l ;SnoopECS ChkBltSize ChkBltWait
- TAB 1930,_bltwait_16 ;ACCESSFAULT,custom.bltsize ;SnoopECS ChkBltSize ChkBltWait
- TAB 2000,_copcon_0 ;ACCESSFAULT ;SnoopOCS ChkCopCon
- TAB 2001,_copcon_1 ;ACCESSFAULT ;SnoopOCS ChkCopCon
- TAB 2002,_copcon_2 ;ACCESSFAULT ;SnoopOCS ChkCopCon
- TAB 2003,_copcon_3 ;ACCESSFAULT ;SnoopOCS ChkCopCon
- TAB 2004,_copcon_4 ;OK ;SnoopOCS
- TAB 2101,_cia_1 ;OK ;SnoopOCS
- TAB 2102,_cia_2 ;OK ;SnoopOCS
- TAB 2103,_cia_3 ;ACCESSFAULT,ciaa.pra ;Snoop
- TAB 2104,_cia_4 ;OK ;SnoopOCS
- TAB 2105,_cia_5 ;ACCESSFAULT,ciaa.ddra ;SnoopOCS
- TAB 2106,_cia_6 ;OK ;SnoopOCS
- TAB 2107,_cia_7 ;OK ;SnoopOCS
- TAB 62108,_cia_8 ;ACCESSFAULT,ciaa.todlow ;SnoopECS
- TAB 2109,_cia_9 ;OK ;SnoopOCS
- TAB 2110,_cia_10 ;OK ;SnoopOCS
- TAB 2111,_cia_11 ;OK ;SnoopOCS
- TAB 2112,_cia_12 ;ACCESSFAULT,ciab.prb ;SnoopAGA
- TAB 2113,_cia_13 ;OK ;SnoopOCS
- TAB 2114,_cia_14 ;ACCESSFAULT,ciab.ddra ;SnoopOCS
- TAB 2115,_cia_15 ;OK ;SnoopOCS
- TAB 2116,_cia_16 ;ACCESSFAULT,ciab.ddrb ;SnoopOCS
- TAB 2117,_cia_17 ;OK ;SnoopOCS
- TAB 2118,_cia_18 ;OK ;SnoopOCS
- TAB 2201,_cust_1 ;OK ;SnoopOCS
- TAB 2202,_cust_2 ;OK ;SnoopOCS
- TAB 2203,_cust_3 ;OK ;SnoopOCS
- TAB 2204,_cust_4 ;OK ;Snoop
- TAB 2205,_cust_5 ;OK ;Snoop
- TAB 2206,_cust_4 ;ACCESSFAULT,custom.intreqr ;SnoopOCS
- TAB 2207,_cust_5 ;ACCESSFAULT,custom.bltcon0 ;SnoopOCS
- TAB 2208,_cust_8 ;OK ;Snoop
- TAB 2209,_cust_9 ;OK ;Snoop
- TAB 2210,_cust_10 ;OK ;Snoop
- TAB 2211,_cust_8 ;ACCESSFAULT,Byte Write,custom.dmaconr ;SnoopOCS
- TAB 2212,_cust_9 ;ACCESSFAULT,Word Write,custom.dmaconr ;SnoopOCS
- TAB 2213,_cust_10 ;ACCESSFAULT,Long Write,custom.dmaconr ;SnoopOCS
- TAB 2214,_cust_14 ;OK ;SnoopAGA
- TAB 2215,_cust_14 ;ACCESSFAULT ;SnoopECS
- TAB 2216,_cust_16 ;OK ;SnoopECS
- TAB 2217,_cust_16 ;ACCESSFAULT ;SnoopOCS
- TAB 2218,_cust_18 ;ACCESSFAULT ;SnoopOCS
- TAB 2219,_cust_19 ;OK ;SnoopOCS
- TAB 2220,_cust_20 ;OK ;Snoop
- TAB 32221,_cust_21 ;OK ;Snoop
- TAB 62221,_cust_21 ;SNOOPSSPMODI ;Snoop
- TAB 2222,_cust_22 ;OK ;Snoop
- TAB 2223,_cust_22 ;ACCESSFAULT ;SnoopOCS
- TAB 2224,_cust_24 ;ACCESSFAULT ;SnoopAGA
- TAB 2225,_cust_25 ;ACCESSFAULT ;SnoopOCS ChkColBst
- TAB 2226,_cust_26 ;ACCESSFAULT ;SnoopOCS
- TAB 2227,_cust_27 ;ACCESSFAULT ;SnoopOCS
- TAB 2228,_cust_28 ;ACCESSFAULT ;SnoopOCS
- TAB 2229,_cust_29 ;ACCESSFAULT ;SnoopOCS
- TAB 2230,_cust_30 ;ACCESSFAULT ;SnoopOCS
- TAB 2231,_cust_30 ;ACCESSFAULT ;SnoopECS
- TAB 2232,_cust_30 ;OK ;SnoopAGA
- TAB 2233,_cust_30 ;ACCESSFAULT ;SnoopAGA ChkColBst
- TAB 2234,_cust_34 ;OK ;SnoopOCS
- TAB 2235,_cust_34 ;ACCESSFAULT ;SnoopOCS ChkBltHog
- TAB 2236,_cust_36 ;ACCESSFAULT ;SnoopOCS ChkCopCon
- TAB 2237,_cust_37 ;ACCESSFAULT ;SnoopOCS ChkCopCon
- TAB 2238,_cust_38 ;ACCESSFAULT ;SnoopOCS ChkCopCon
- TAB 2239,_cust_36 ;OK ;SnoopOCS
- TAB 2240,_cust_37 ;OK ;SnoopOCS
- TAB 2241,_cust_38 ;OK ;SnoopOCS
- TAB 2242,_cust_42 ;ACCESSFAULT ;SnoopOCS
- TAB 2243,_cust_42 ;ACCESSFAULT ;SnoopOCS ChkBltWait
- TAB 2244,_cust_42 ;ACCESSFAULT ;SnoopOCS ChkBltWait ChkBltSize
- TAB 2245,_cust_42 ;ACCESSFAULT ;SnoopOCS ChkBltSize
- TAB 2246,_cust_46 ;ACCESSFAULT ;SnoopOCS Chk
- TAB 2247,_cust_47 ;ACCESSFAULT,custom.bltsize ;SnoopECS
- TAB 2248,_cust_48 ;ACCESSFAULT,custom.bltsizh ;SnoopECS
- TAB 2300,_cop_0 ;OK ;SnoopECS
- TAB 2301,_cop_1 ;BADCOP ;SnoopOCS
- TAB 2302,_cop_2 ;BADCOP ;SnoopOCS
- TAB 2303,_cop_3 ;OK ;SnoopOCS
- TAB 2304,_cop_3 ;BADCOP ;SnoopOCS ChkColBst
- TAB 2305,_cop_3 ;BADCOP ;SnoopOCS Chk
- TAB 2306,_cop_6 ;BADCOP ;SnoopOCS
- TAB 2307,_cop_6 ;OK ;SnoopECS
- TAB 2308,_cop_8 ;BADCOP ;SnoopOCS
- TAB 2309,_cop_8 ;OK ;SnoopECS
- TAB 2310,_cop_10 ;OK ;Snoop
- TAB 2311,_cop_10 ;BADCOP ;SnoopOCS
- TAB 2312,_cop_12 ;BADCOP ;SnoopOCS
- TAB 2313,_cop_13 ;BADCOP ;SnoopOCS
- TAB 3000,_af_inst_0 ;ACCESSFAULT,Instruction stream,$A0000000 ;
- TAB 3001,_af_inst_1 ;ACCESSFAULT,Word Read,$0 ;
- TAB 3002,_af_inst_2 ;ACCESSFAULT,Word Read,$1000 ;
- TAB 33003,_af_inst_330 ;ACCESSFAULT,Word Read,$3FFFC ;
- TAB 63003,_af_inst_360 ;ACCESSFAULT,Word Read,$3FFFE ;
- TAB 3004,_af_inst_4 ;ACCESSFAULT,Word Read,(ExpMem $0) ;
- TAB 3005,_af_inst_5 ;ACCESSFAULT,Word Read,(ExpMem $100) ;
- TAB 33006,_af_inst_630 ;ACCESSFAULT,Word Read,(ExpMem $FFFC) ;
- TAB 63006,_af_inst_660 ;ACCESSFAULT,Word Read,(ExpMem $FFFE) ;
- TAB 3009,_af_inst_9 ;EXCEPTION,Address Error ;
- TAB 3100,_af_smc_ok ;OK, ;
- TAB 3101,_af_smc_1 ;SMC,address $1002 has ;
- TAB 3110,_af_smc_ba1 ;PROTECTSMC,already ;
- TAB 3111,_af_smc_ba2 ;ILLEGALARGS,TC = ;
- TAB 63200,_af_cbaf_0 ;ACCESSFAULT,$1000 ;
- TAB 63201,_af_cbaf_1 ;OK ;
- TAB 63202,_af_cbaf_2 ;OK ;
- TAB 63203,_af_cbaf_3 ;OK ;
- TAB 33204,_af_cbaf_4 ;OK ;
- TAB 33205,_af_cbaf_5 ;OK ;
- TAB 33206,_af_cbaf_6 ;OK ;
- TAB 4000,_af_prot_rlok ;OK ;
- TAB 4001,_af_prot_wlok ;OK ;
- TAB 4002,_af_prot_rwok ;OK ;
- TAB 4003,_af_prot_wwok ;OK ;
- TAB 4004,_af_prot_rbok ;OK ;
- TAB 4005,_af_prot_wbok ;OK ;
- TAB 4010,_af_prot_rll ;ACCESSFAULT,Long Read from $10FD ;
- TAB 4011,_af_prot_rlu ;ACCESSFAULT,Long Read from $1103 ;
- TAB 4012,_af_prot_wll ;ACCESSFAULT,Long Write to $10FD ;
- TAB 4013,_af_prot_wlu ;ACCESSFAULT,Long Write to $1103 ;
- TAB 34014,_af_prot_mll ;ACCESSFAULT,Long Read from $10FD ;
- TAB 34015,_af_prot_mlu ;ACCESSFAULT,Long Read from $1103 ;
- TAB 64014,_af_prot_mll ;ACCESSFAULT,Long Read-Modify-Write on $10FD ;
- TAB 64015,_af_prot_mlu ;ACCESSFAULT,Long Read-Modify-Write on $1103 ;
- TAB 4020,_af_prot_rwl ;ACCESSFAULT,Word Read from $10FF ;
- TAB 4021,_af_prot_rwu ;ACCESSFAULT,Word Read from $1103 ;
- TAB 4022,_af_prot_wwl ;ACCESSFAULT,Word Write to $10FF ;
- TAB 4023,_af_prot_wwu ;ACCESSFAULT,Word Write to $1103 ;
- TAB 34024,_af_prot_mwl ;ACCESSFAULT,Word Read from $10FF ;
- TAB 34025,_af_prot_mwu ;ACCESSFAULT,Word Read from $1103 ;
- TAB 64024,_af_prot_mwl ;ACCESSFAULT,Word Read-Modify-Write on $10FF ;
- TAB 64025,_af_prot_mwu ;ACCESSFAULT,Word Read-Modify-Write on $1103 ;
- TAB 4030,_af_prot_rbl ;ACCESSFAULT,Byte Read from $1100 ;
- TAB 4031,_af_prot_rbu ;ACCESSFAULT,Byte Read from $1103 ;
- TAB 4032,_af_prot_wbl ;ACCESSFAULT,Byte Write to $1100 ;
- TAB 4033,_af_prot_wbu ;ACCESSFAULT,Byte Write to $1103 ;
- TAB 34034,_af_prot_mbl ;ACCESSFAULT,Byte Read from $1100 ;
- TAB 34035,_af_prot_mbu ;ACCESSFAULT,Byte Read from $1103 ;
- TAB 64034,_af_prot_mbl ;ACCESSFAULT,Byte Read-Modify-Write on $1100 ;
- TAB 64035,_af_prot_mbu ;ACCESSFAULT,Byte Read-Modify-Write on $1103 ;
- TAB 4040,_af_prot_tas ;ACCESSFAULT,locked Byte Read-Modify-Write on $1100 ;
- TAB 4041,_af_prot_cas ;ACCESSFAULT,locked Long Read-Modify-Write on $1100 ;
-
- dc.l 0 ;end
-
- ;======================================================================
- ; 111111
- ; 5432109876543210
- ; bltcon0 SSSSABCDMMMMMMMM S = shift for channel A
- ; ABCD = enable for dma channel ABCD
- ; M = miniterm
- ; bltcon1 SSSS EICDL E = exclusive fill enable
- ; I = inclusive fill enable
- ; C = fill carry in
- ; D = descending mode
- ; L = line mode
- ; bltsize HHHHHHHHHHWWWWWW height = 1..1024 lines
- ; width = 1..64 words
-
- _bltsiz_0 move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- IFEQ 1
- ;testing to see how blitter works
- move.w #%0000000100000000,(bltcon0,a6) ;only DMA-D
- move.w #%0000000000000000,(bltcon1,a6) ;ascending
- move.w #10,(bltdmod,a6) ;mod > -wid
- move.l #$1000,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- bsr _bw
- move.w #-6,(bltdmod,a6) ;mod = -wid
- move.l #$2000,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- bsr _bw
- move.w #-22,(bltdmod,a6) ;mod < -wid
- move.l #$3000,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- bsr _bw
- move.w #%0000000000000010,(bltcon1,a6) ;descending
- move.w #10,(bltdmod,a6) ;mod > -wid
- move.l #$4000,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- bsr _bw
- move.w #-6,(bltdmod,a6) ;mod = -wid
- move.l #$5000,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- bsr _bw
- move.w #-22,(bltdmod,a6) ;mod < -wid
- move.l #$6000,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- bsr _bw
- bra _debug
- ENDC
- move.w #%0000111100000000,(bltcon0,a6) ;all channels
- ;ascending
- move.w #%0000000000000000,(bltcon1,a6)
- ;ascending, modulo > -width, lower bound
- move.w #10,(bltcmod,a6)
- move.w #10,(bltbmod,a6)
- move.w #10,(bltamod,a6)
- move.w #10,(bltdmod,a6)
- move.l #0,(bltcpt,a6)
- move.l #0,(bltbpt,a6)
- move.l #0,(bltapt,a6)
- move.l #0,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- bsr _bw
- move.w #11,(bltcmod,a6)
- move.w #11,(bltbmod,a6)
- move.w #11,(bltamod,a6)
- move.w #11,(bltdmod,a6)
- move.l #1,(bltcpt,a6)
- move.l #1,(bltbpt,a6)
- move.l #1,(bltapt,a6)
- move.l #1,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- bsr _bw
- ;ascending, modulo > -width, upper bound
- move.w #10,(bltcmod,a6)
- move.w #10,(bltbmod,a6)
- move.w #10,(bltamod,a6)
- move.w #10,(bltdmod,a6)
- move.l #BASEMEM-$30+10,(bltcpt,a6)
- move.l #BASEMEM-$30+10,(bltbpt,a6)
- move.l #BASEMEM-$30+10,(bltapt,a6)
- move.l #BASEMEM-$30+10,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- bsr _bw
- move.w #11,(bltcmod,a6)
- move.w #11,(bltbmod,a6)
- move.w #11,(bltamod,a6)
- move.w #11,(bltdmod,a6)
- move.l #BASEMEM-$30+11,(bltcpt,a6)
- move.l #BASEMEM-$30+11,(bltbpt,a6)
- move.l #BASEMEM-$30+11,(bltapt,a6)
- move.l #BASEMEM-$30+11,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- bsr _bw
- ;ascending, modulo == -width, lower bound
- move.w #-6,(bltcmod,a6)
- move.w #-6,(bltbmod,a6)
- move.w #-6,(bltamod,a6)
- move.w #-6,(bltdmod,a6)
- move.l #0,(bltcpt,a6)
- move.l #0,(bltbpt,a6)
- move.l #0,(bltapt,a6)
- move.l #0,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- bsr _bw
- move.w #-6!1,(bltcmod,a6)
- move.w #-6!1,(bltbmod,a6)
- move.w #-6!1,(bltamod,a6)
- move.w #-6!1,(bltdmod,a6)
- move.l #1,(bltcpt,a6)
- move.l #1,(bltbpt,a6)
- move.l #1,(bltapt,a6)
- move.l #1,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- bsr _bw
- ;ascending, modulo == -width, upper bound
- move.w #-6,(bltcmod,a6)
- move.w #-6,(bltbmod,a6)
- move.w #-6,(bltamod,a6)
- move.w #-6,(bltdmod,a6)
- move.l #BASEMEM-6,(bltcpt,a6)
- move.l #BASEMEM-6,(bltbpt,a6)
- move.l #BASEMEM-6,(bltapt,a6)
- move.l #BASEMEM-6,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- bsr _bw
- move.w #-6!1,(bltcmod,a6)
- move.w #-6!1,(bltbmod,a6)
- move.w #-6!1,(bltamod,a6)
- move.w #-6!1,(bltdmod,a6)
- move.l #BASEMEM-6!1,(bltcpt,a6)
- move.l #BASEMEM-6!1,(bltbpt,a6)
- move.l #BASEMEM-6!1,(bltapt,a6)
- move.l #BASEMEM-6!1,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- bsr _bw
- ;ascending, modulo < -width, lower bound
- move.w #-16-6,(bltcmod,a6)
- move.w #-16-6,(bltbmod,a6)
- move.w #-16-6,(bltamod,a6)
- move.w #-16-6,(bltdmod,a6)
- move.l #$20,(bltcpt,a6)
- move.l #$20,(bltbpt,a6)
- move.l #$20,(bltapt,a6)
- move.l #$20,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- bsr _bw
- move.w #-16-6!1,(bltcmod,a6)
- move.w #-16-6!1,(bltbmod,a6)
- move.w #-16-6!1,(bltamod,a6)
- move.w #-16-6!1,(bltdmod,a6)
- move.l #$21,(bltcpt,a6)
- move.l #$21,(bltbpt,a6)
- move.l #$21,(bltapt,a6)
- move.l #$21,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- bsr _bw
- ;ascending, modulo < -width, upper bound
- move.w #-16-6,(bltcmod,a6)
- move.w #-16-6,(bltbmod,a6)
- move.w #-16-6,(bltamod,a6)
- move.w #-16-6,(bltdmod,a6)
- move.l #BASEMEM-6,(bltcpt,a6)
- move.l #BASEMEM-6,(bltbpt,a6)
- move.l #BASEMEM-6,(bltapt,a6)
- move.l #BASEMEM-6,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- bsr _bw
- move.w #-16-6!1,(bltcmod,a6)
- move.w #-16-6!1,(bltbmod,a6)
- move.w #-16-6!1,(bltamod,a6)
- move.w #-16-6!1,(bltdmod,a6)
- move.l #BASEMEM-6!1,(bltcpt,a6)
- move.l #BASEMEM-6!1,(bltbpt,a6)
- move.l #BASEMEM-6!1,(bltapt,a6)
- move.l #BASEMEM-6!1,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- bsr _bw
- ;descending
- move.w #%0000000000000010,(bltcon1,a6)
- ;descending, modulo > -width, lower bound
- move.w #10,(bltcmod,a6)
- move.w #10,(bltbmod,a6)
- move.w #10,(bltamod,a6)
- move.w #10,(bltdmod,a6)
- move.l #$20+4,(bltcpt,a6)
- move.l #$20+4,(bltbpt,a6)
- move.l #$20+4,(bltapt,a6)
- move.l #$20+4,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- bsr _bw
- move.w #11,(bltcmod,a6)
- move.w #11,(bltbmod,a6)
- move.w #11,(bltamod,a6)
- move.w #11,(bltdmod,a6)
- move.l #$20+5,(bltcpt,a6)
- move.l #$20+5,(bltbpt,a6)
- move.l #$20+5,(bltapt,a6)
- move.l #$20+5,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- bsr _bw
- ;descending, modulo > -width, upper bound
- move.w #10,(bltcmod,a6)
- move.w #10,(bltbmod,a6)
- move.w #10,(bltamod,a6)
- move.w #10,(bltdmod,a6)
- move.l #BASEMEM-2,(bltcpt,a6)
- move.l #BASEMEM-2,(bltbpt,a6)
- move.l #BASEMEM-2,(bltapt,a6)
- move.l #BASEMEM-2,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- bsr _bw
- move.w #11,(bltcmod,a6)
- move.w #11,(bltbmod,a6)
- move.w #11,(bltamod,a6)
- move.w #11,(bltdmod,a6)
- move.l #BASEMEM-1,(bltcpt,a6)
- move.l #BASEMEM-1,(bltbpt,a6)
- move.l #BASEMEM-1,(bltapt,a6)
- move.l #BASEMEM-1,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- bsr _bw
- ;descending, modulo == -width, lower bound
- move.w #-6,(bltcmod,a6)
- move.w #-6,(bltbmod,a6)
- move.w #-6,(bltamod,a6)
- move.w #-6,(bltdmod,a6)
- move.l #4,(bltcpt,a6)
- move.l #4,(bltbpt,a6)
- move.l #4,(bltapt,a6)
- move.l #4,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- bsr _bw
- move.w #-6!1,(bltcmod,a6)
- move.w #-6!1,(bltbmod,a6)
- move.w #-6!1,(bltamod,a6)
- move.w #-6!1,(bltdmod,a6)
- move.l #5,(bltcpt,a6)
- move.l #5,(bltbpt,a6)
- move.l #5,(bltapt,a6)
- move.l #5,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- bsr _bw
- ;descending, modulo == -width, upper bound
- move.w #-6,(bltcmod,a6)
- move.w #-6,(bltbmod,a6)
- move.w #-6,(bltamod,a6)
- move.w #-6,(bltdmod,a6)
- move.l #BASEMEM-2,(bltcpt,a6)
- move.l #BASEMEM-2,(bltbpt,a6)
- move.l #BASEMEM-2,(bltapt,a6)
- move.l #BASEMEM-2,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- bsr _bw
- move.w #-6!1,(bltcmod,a6)
- move.w #-6!1,(bltbmod,a6)
- move.w #-6!1,(bltamod,a6)
- move.w #-6!1,(bltdmod,a6)
- move.l #BASEMEM-2!1,(bltcpt,a6)
- move.l #BASEMEM-2!1,(bltbpt,a6)
- move.l #BASEMEM-2!1,(bltapt,a6)
- move.l #BASEMEM-2!1,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- bsr _bw
- ;descending, modulo < -width, lower bound
- move.w #-16-6,(bltcmod,a6)
- move.w #-16-6,(bltbmod,a6)
- move.w #-16-6,(bltamod,a6)
- move.w #-16-6,(bltdmod,a6)
- move.l #4,(bltcpt,a6)
- move.l #4,(bltbpt,a6)
- move.l #4,(bltapt,a6)
- move.l #4,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- bsr _bw
- move.w #-16-6!1,(bltcmod,a6)
- move.w #-16-6!1,(bltbmod,a6)
- move.w #-16-6!1,(bltamod,a6)
- move.w #-16-6!1,(bltdmod,a6)
- move.l #5,(bltcpt,a6)
- move.l #5,(bltbpt,a6)
- move.l #5,(bltapt,a6)
- move.l #5,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- bsr _bw
- ;descending, modulo < -width, upper bound
- move.w #-16-6,(bltcmod,a6)
- move.w #-16-6,(bltbmod,a6)
- move.w #-16-6,(bltamod,a6)
- move.w #-16-6,(bltdmod,a6)
- move.l #BASEMEM-$20-2,(bltcpt,a6)
- move.l #BASEMEM-$20-2,(bltbpt,a6)
- move.l #BASEMEM-$20-2,(bltapt,a6)
- move.l #BASEMEM-$20-2,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- bsr _bw
- move.w #-16-6!1,(bltcmod,a6)
- move.w #-16-6!1,(bltbmod,a6)
- move.w #-16-6!1,(bltamod,a6)
- move.w #-16-6!1,(bltdmod,a6)
- move.l #BASEMEM-$20-2!1,(bltcpt,a6)
- move.l #BASEMEM-$20-2!1,(bltbpt,a6)
- move.l #BASEMEM-$20-2!1,(bltapt,a6)
- move.l #BASEMEM-$20-2!1,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- bsr _bw
- rts
-
- ;ascending, modulo > -width, lower bound
- _bltsiz_1a move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000100011111111,(bltcon0,a6)
- move.w #%0000000000000000,(bltcon1,a6)
- move.w #10,(bltamod,a6)
- move.l #-1,(bltapt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;ascending, modulo > -width, upper bound
- _bltsiz_2a move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000100011111111,(bltcon0,a6)
- move.w #%0000000000000000,(bltcon1,a6)
- move.w #10,(bltamod,a6)
- move.l #BASEMEM-$30+10+2,(bltapt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;ascending, modulo == -width, lower bound
- _bltsiz_3a move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000100011111111,(bltcon0,a6)
- move.w #%0000000000000000,(bltcon1,a6)
- move.w #-6,(bltamod,a6)
- move.l #-1,(bltapt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;ascending, modulo == -width, upper bound
- _bltsiz_4a move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000100011111111,(bltcon0,a6)
- move.w #%0000000000000000,(bltcon1,a6)
- move.w #-6,(bltamod,a6)
- move.l #BASEMEM-6+2,(bltapt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;ascending, modulo < -width, lower bound
- _bltsiz_5a move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000100011111111,(bltcon0,a6)
- move.w #%0000000000000000,(bltcon1,a6)
- move.w #-16-6,(bltamod,a6)
- move.l #$20-2,(bltapt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;ascending, modulo < -width, upper bound
- _bltsiz_6a move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000100011111111,(bltcon0,a6)
- move.w #%0000000000000000,(bltcon1,a6)
- move.w #-16-6,(bltamod,a6)
- move.l #BASEMEM-6+2,(bltapt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;descending, modulo > -width, lower bound
- _bltsiz_7a move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000100011111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #10,(bltamod,a6)
- move.l #$20+4-2,(bltapt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;descending, modulo > -width, upper bound
- _bltsiz_8a move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000100011111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #10,(bltamod,a6)
- move.l #BASEMEM-2+2,(bltapt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;descending, modulo == -width, lower bound
- _bltsiz_9a move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000100011111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #-6,(bltamod,a6)
- move.l #4-2,(bltapt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;descending, modulo == -width, upper bound
- _bltsiz_10a move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000100011111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #-6,(bltamod,a6)
- move.l #BASEMEM-2+2,(bltapt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;descending, modulo < -width, lower bound
- _bltsiz_11a move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000100011111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #-16-6,(bltamod,a6)
- move.l #4-2,(bltapt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;descending, modulo < -width, upper bound
- _bltsiz_12a move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000100011111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #-16-6,(bltamod,a6)
- move.l #BASEMEM-$20-2+2,(bltapt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
-
- ;ascending, modulo > -width, lower bound
- _bltsiz_1b move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000010011111111,(bltcon0,a6)
- move.w #%0000000000000000,(bltcon1,a6)
- move.w #10,(bltbmod,a6)
- move.l #-1,(bltbpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;ascending, modulo > -width, upper bound
- _bltsiz_2b move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000010011111111,(bltcon0,a6)
- move.w #%0000000000000000,(bltcon1,a6)
- move.w #10,(bltbmod,a6)
- move.l #BASEMEM-$30+10+2,(bltbpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;ascending, modulo == -width, lower bound
- _bltsiz_3b move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000010011111111,(bltcon0,a6)
- move.w #%0000000000000000,(bltcon1,a6)
- move.w #-6,(bltbmod,a6)
- move.l #-1,(bltbpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;ascending, modulo == -width, upper bound
- _bltsiz_4b move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000010011111111,(bltcon0,a6)
- move.w #%0000000000000000,(bltcon1,a6)
- move.w #-6,(bltbmod,a6)
- move.l #BASEMEM-6+2,(bltbpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;ascending, modulo < -width, lower bound
- _bltsiz_5b move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000010011111111,(bltcon0,a6)
- move.w #%0000000000000000,(bltcon1,a6)
- move.w #-16-6,(bltbmod,a6)
- move.l #$20-2,(bltbpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;ascending, modulo < -width, upper bound
- _bltsiz_6b move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000010011111111,(bltcon0,a6)
- move.w #%0000000000000000,(bltcon1,a6)
- move.w #-16-6,(bltbmod,a6)
- move.l #BASEMEM-6+2,(bltbpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;descending, modulo > -width, lower bound
- _bltsiz_7b move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000010011111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #10,(bltbmod,a6)
- move.l #$20+4-2,(bltbpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;descending, modulo > -width, upper bound
- _bltsiz_8b move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000010011111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #10,(bltbmod,a6)
- move.l #BASEMEM-2+2,(bltbpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;descending, modulo == -width, lower bound
- _bltsiz_9b move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000010011111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #-6,(bltbmod,a6)
- move.l #4-2,(bltbpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;descending, modulo == -width, upper bound
- _bltsiz_10b move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000010011111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #-6,(bltbmod,a6)
- move.l #BASEMEM-2+2,(bltbpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;descending, modulo < -width, lower bound
- _bltsiz_11b move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000010011111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #-16-6,(bltbmod,a6)
- move.l #4-2,(bltbpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;descending, modulo < -width, upper bound
- _bltsiz_12b move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000010011111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #-16-6,(bltbmod,a6)
- move.l #BASEMEM-$20-2+2,(bltbpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
-
- ;ascending, modulo > -width, lower bound
- _bltsiz_1c move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000001011111111,(bltcon0,a6)
- move.w #%0000000000000000,(bltcon1,a6)
- move.w #10,(bltcmod,a6)
- move.l #-1,(bltcpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;ascending, modulo > -width, upper bound
- _bltsiz_2c move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000001011111111,(bltcon0,a6)
- move.w #%0000000000000000,(bltcon1,a6)
- move.w #10,(bltcmod,a6)
- move.l #BASEMEM-$30+10+2,(bltcpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;ascending, modulo == -width, lower bound
- _bltsiz_3c move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000001011111111,(bltcon0,a6)
- move.w #%0000000000000000,(bltcon1,a6)
- move.w #-6,(bltcmod,a6)
- move.l #-1,(bltcpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;ascending, modulo == -width, upper bound
- _bltsiz_4c move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000001011111111,(bltcon0,a6)
- move.w #%0000000000000000,(bltcon1,a6)
- move.w #-6,(bltcmod,a6)
- move.l #BASEMEM-6+2,(bltcpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;ascending, modulo < -width, lower bound
- _bltsiz_5c move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000001011111111,(bltcon0,a6)
- move.w #%0000000000000000,(bltcon1,a6)
- move.w #-16-6,(bltcmod,a6)
- move.l #$20-2,(bltcpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;ascending, modulo < -width, upper bound
- _bltsiz_6c move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000001011111111,(bltcon0,a6)
- move.w #%0000000000000000,(bltcon1,a6)
- move.w #-16-6,(bltcmod,a6)
- move.l #BASEMEM-6+2,(bltcpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;descending, modulo > -width, lower bound
- _bltsiz_7c move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000001011111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #10,(bltcmod,a6)
- move.l #$20+4-2,(bltcpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;descending, modulo > -width, upper bound
- _bltsiz_8c move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000001011111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #10,(bltcmod,a6)
- move.l #BASEMEM-2+2,(bltcpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;descending, modulo == -width, lower bound
- _bltsiz_9c move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000001011111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #-6,(bltcmod,a6)
- move.l #4-2,(bltcpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;descending, modulo == -width, upper bound
- _bltsiz_10c move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000001011111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #-6,(bltcmod,a6)
- move.l #BASEMEM-2+2,(bltcpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;descending, modulo < -width, lower bound
- _bltsiz_11c move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000001011111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #-16-6,(bltcmod,a6)
- move.l #4-2,(bltcpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;descending, modulo < -width, upper bound
- _bltsiz_12c move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000001011111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #-16-6,(bltcmod,a6)
- move.l #BASEMEM-$20-2+2,(bltcpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
-
- ;ascending, modulo > -width, lower bound
- _bltsiz_1d move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000000111111111,(bltcon0,a6)
- move.w #%0000000000000000,(bltcon1,a6)
- move.w #10,(bltdmod,a6)
- move.l #-1,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;ascending, modulo > -width, upper bound
- _bltsiz_2d move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000000111111111,(bltcon0,a6)
- move.w #%0000000000000000,(bltcon1,a6)
- move.w #10,(bltdmod,a6)
- move.l #BASEMEM-$30+10+2,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;ascending, modulo == -width, lower bound
- _bltsiz_3d move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000000111111111,(bltcon0,a6)
- move.w #%0000000000000000,(bltcon1,a6)
- move.w #-6,(bltdmod,a6)
- move.l #-1,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;ascending, modulo == -width, upper bound
- _bltsiz_4d move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000000111111111,(bltcon0,a6)
- move.w #%0000000000000000,(bltcon1,a6)
- move.w #-6,(bltdmod,a6)
- move.l #BASEMEM-6+2,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;ascending, modulo < -width, lower bound
- _bltsiz_5d move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000000111111111,(bltcon0,a6)
- move.w #%0000000000000000,(bltcon1,a6)
- move.w #-16-6,(bltdmod,a6)
- move.l #$20-2,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;ascending, modulo < -width, upper bound
- _bltsiz_6d move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000000111111111,(bltcon0,a6)
- move.w #%0000000000000000,(bltcon1,a6)
- move.w #-16-6,(bltdmod,a6)
- move.l #BASEMEM-6+2,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;descending, modulo > -width, lower bound
- _bltsiz_7d move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000000111111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #10,(bltdmod,a6)
- move.l #$20+4-2,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;descending, modulo > -width, upper bound
- _bltsiz_8d move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000000111111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #10,(bltdmod,a6)
- move.l #BASEMEM-2+2,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;descending, modulo == -width, lower bound
- _bltsiz_9d move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000000111111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #-6,(bltdmod,a6)
- move.l #4-2,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;descending, modulo == -width, upper bound
- _bltsiz_10d move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000000111111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #-6,(bltdmod,a6)
- move.l #BASEMEM-2+2,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;descending, modulo < -width, lower bound
- _bltsiz_11d move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000000111111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #-16-6,(bltdmod,a6)
- move.l #4-2,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
- ;descending, modulo < -width, upper bound
- _bltsiz_12d move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000000111111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #-16-6,(bltdmod,a6)
- move.l #BASEMEM-$20-2+2,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- rts
-
- ;ascending, modulo > -width, lower bound
- _bltsizprot_0 lea .1,a3
- bra _bltsizprot_ok
- .1 move.w #2*64+3,(bltsize,a6) ;2 lines, 3 words
- rts
- _bltsizprot_1 lea .1,a3
- bra _bltsizprot_ok
- .1 move.l #$11000000+2*64+3,(bltdpt+2,a6) ;2 lines, 3 words
- rts
- _bltsizprot_2 lea .1,a3
- bra _bltsizprot_ok
- .1 move.w #$1100,d0
- move.w #2*64+3,d1
- move.l (a7)+,a0
- bsr _savreg
- movem.w d0-d1,(bltdpt+2,a6) ;2 lines, 3 words
- jmp (a0)
- _bltsizprot_3 lea .1,a3
- bra _bltsizprot_ok
- .1 move.w #3,(bltsizv,a6)
- move.w #2,(bltsizh,a6)
- rts
- _bltsizprot_4 lea .1,a3
- bra _bltsizprot_ok
- .1 move.l #$30002,(bltsizv,a6)
- rts
- _bltsizprot_5 lea .1,a3
- bra _bltsizprot_ok
- .1 move.w #3,d0
- move.w #2,d1
- move.l (a7)+,a0
- bsr _savreg
- movem.w d0-d1,(bltsizv,a6) ;2 lines, 3 words
- jmp (a0)
-
- _bltsizprot_ok lea $1100-4,a2
- moveq #4,d0
- move.l a2,a0
- add.l d0,a2
- jsr (resload_ProtectWrite,a4)
- move.l #16+6,d0
- move.l a2,a0
- add.l d0,a2
- jsr (resload_ProtectRead,a4)
- moveq #4,d0
- move.l a2,a0
- jsr (resload_ProtectWrite,a4)
- move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000000111111111,(bltcon0,a6)
- move.w #%0000000000000000,(bltcon1,a6)
- move.w #10,(bltdmod,a6)
- move.l #$1100,(bltdpt,a6)
- bsr _savreg
- jsr (a3)
- bsr _chkreg
- rts
-
- ;fail lower bound
- _bltsizprot_20 bsr _bltsizprot_fl
- move.w #2*64+3,(bltsize,a6) ;2 lines, 3 words
- rts
- _bltsizprot_21 bsr _bltsizprot_fl
- move.l #$10fe0000+2*64+3,(bltdpt+2,a6) ;2 lines, 3 words
- rts
- _bltsizprot_22 bsr _bltsizprot_fl
- move.w #$1100-2,d0
- move.w #2*64+3,d1
- movem.w d0-d1,(bltdpt+2,a6) ;2 lines, 3 words
- rts
- _bltsizprot_23 bsr _bltsizprot_fl
- move.w #3,(bltsizv,a6)
- move.w #2,(bltsizh,a6)
- rts
- _bltsizprot_24 bsr _bltsizprot_fl
- move.l #$30002,(bltsizv,a6)
- rts
- _bltsizprot_25 bsr _bltsizprot_fl
- move.w #3,d0
- move.w #2,d1
- movem.w d0-d1,(bltsizv,a6) ;2 lines, 3 words
- rts
-
- _bltsizprot_fl lea $1100-4,a2
- moveq #4,d0
- move.l a2,a0
- add.l d0,a2
- jsr (resload_ProtectWrite,a4)
- move.l #16+6,d0
- move.l a2,a0
- add.l d0,a2
- jsr (resload_ProtectRead,a4)
- moveq #4,d0
- move.l a2,a0
- jsr (resload_ProtectReadWrite,a4)
- move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000000111111111,(bltcon0,a6)
- move.w #%0000000000000000,(bltcon1,a6)
- move.w #10,(bltdmod,a6)
- move.l #$1100-2,(bltdpt,a6)
- rts
-
- ;fail upper bound
- _bltsizprot_40 bsr _bltsizprot_fu
- move.w #2*64+3,(bltsize,a6) ;2 lines, 3 words
- rts
- _bltsizprot_41 bsr _bltsizprot_fu
- move.l #$11020000+2*64+3,(bltdpt+2,a6) ;2 lines, 3 words
- rts
- _bltsizprot_42 bsr _bltsizprot_fu
- move.w #$1100+2,d0
- move.w #2*64+3,d1
- movem.w d0-d1,(bltdpt+2,a6) ;2 lines, 3 words
- rts
- _bltsizprot_43 bsr _bltsizprot_fu
- move.w #3,(bltsizv,a6)
- move.w #2,(bltsizh,a6)
- rts
- _bltsizprot_44 bsr _bltsizprot_fu
- move.l #$30002,(bltsizv,a6)
- rts
- _bltsizprot_45 bsr _bltsizprot_fu
- move.w #3,d0
- move.w #2,d1
- movem.w d0-d1,(bltsizv,a6) ;2 lines, 3 words
- rts
-
- _bltsizprot_fu lea $1100-4,a2
- moveq #4,d0
- move.l a2,a0
- add.l d0,a2
- jsr (resload_ProtectWrite,a4)
- move.l #16+6,d0
- move.l a2,a0
- add.l d0,a2
- jsr (resload_ProtectRead,a4)
- moveq #4,d0
- move.l a2,a0
- jsr (resload_ProtectReadWrite,a4)
- move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000000111111111,(bltcon0,a6)
- move.w #%0000000000000000,(bltcon1,a6)
- move.w #10,(bltdmod,a6)
- move.l #$1100+2,(bltdpt,a6)
- rts
-
- ;descending, modulo > -width, lower bound
- _bltsizprot_d0 lea $1100-4,a2
- moveq #4,d0
- move.l a2,a0
- add.l d0,a2
- jsr (resload_ProtectWrite,a4)
- move.l #16+6,d0
- move.l a2,a0
- add.l d0,a2
- jsr (resload_ProtectRead,a4)
- moveq #4,d0
- move.l a2,a0
- jsr (resload_ProtectWrite,a4)
- move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000000111111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #10,(bltdmod,a6)
- move.l #$1100+16+4,(bltdpt,a6)
- bsr _savreg
- move.w #2*64+3,(bltsize,a6) ;2 lines, 3 words
- bsr _chkreg
- rts
- _bltsizprot_d1 lea $1100-4,a2
- moveq #4,d0
- move.l a2,a0
- add.l d0,a2
- jsr (resload_ProtectWrite,a4)
- move.l #16+6,d0
- move.l a2,a0
- add.l d0,a2
- jsr (resload_ProtectRead,a4)
- moveq #4,d0
- move.l a2,a0
- jsr (resload_ProtectWrite,a4)
- move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000000111111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #10,(bltdmod,a6)
- move.l #$1100+16+4-2,(bltdpt,a6)
- bsr _savreg
- move.w #2*64+3,(bltsize,a6) ;2 lines, 3 words
- bsr _chkreg
- rts
- _bltsizprot_d2 lea $1100-4,a2
- moveq #4,d0
- move.l a2,a0
- add.l d0,a2
- jsr (resload_ProtectWrite,a4)
- move.l #16+6,d0
- move.l a2,a0
- add.l d0,a2
- jsr (resload_ProtectRead,a4)
- moveq #4,d0
- move.l a2,a0
- jsr (resload_ProtectWrite,a4)
- move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000000111111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #10,(bltdmod,a6)
- move.l #$1100+16+4+2,(bltdpt,a6)
- bsr _savreg
- move.w #2*64+3,(bltsize,a6) ;2 lines, 3 words
- bsr _chkreg
- rts
-
- ;======================================================================
-
- _bltwait_0 move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000000111111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #-16-6,(bltdmod,a6)
- move.l #$1000,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- bsr _bw
- sf (bltcon0l,a6)
- rts
- _bltwait_1 move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000000111111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #-16-6,(bltdmod,a6)
- move.l #$1000,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- sf (bltcon0l,a6)
- rts
-
- _bltwait_3 move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000000111111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #-16-6,(bltdmod,a6)
- move.l #$1000,(bltdpt,a6)
- move.w #3*64+3,(bltsize,a6) ;3 lines, 3 words
- move.w #0,(bltafwm,a6)
- rts
- _bltwait_4 move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000000111111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #-16-6,(bltdmod,a6)
- move.w #$0000,(bltdpt,a6)
- move.l #$10000000+3*64+3,(bltdpt+2,a6) ;3 lines, 3 words
- move.w #0,(bltafwm,a6)
- rts
- _bltwait_5 move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000000111111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #-16-6,(bltdmod,a6)
- move.w #0,d0
- move.w #$1000,d1
- move.w #3*64+3,d2
- movem.w d0-d2,(bltdpt,a6)
- move.w #0,(bltafwm,a6)
- rts
- _bltwait_6 move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000000111111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #-16-6,(bltdmod,a6)
- move.l #0,d0
- move.l #$10000000+3*64+3,d1
- movem.l d0-d1,(bltapt+2,a6)
- move.w #0,(bltafwm,a6)
- rts
-
- _bltwait_7 move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000000111111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #-16-6,(bltdmod,a6)
- move.w #0,d0
- move.w #$1000,d1
- move.w #3*64+3,d2
- movem.w d0-d3,(bltdpt,a6)
- move.w #0,(bltafwm,a6)
- rts
- _bltwait_8 move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000000111111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #-16-6,(bltdmod,a6)
- move.l #$1000,d0
- move.l #(3*64+3)<<16,d1
- movem.l d0-d1,(bltdpt,a6)
- move.w #0,(bltafwm,a6)
- rts
-
- _bltwait_9 move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000000111111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #-16-6,(bltdmod,a6)
- move.l #$1000,(bltdpt,a6)
- move.w #3,(bltsizv,a6)
- move.w #3,(bltsizh,a6)
- move.w #0,(bltafwm,a6)
- rts
- _bltwait_10 move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000000111111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #-16-6,(bltdmod,a6)
- move.l #$1000,(bltdpt,a6)
- move.l #$30003,(bltsizv,a6)
- move.w #0,(bltafwm,a6)
- rts
- _bltwait_11 move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000000111111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #-16-6,(bltdmod,a6)
- move.l #$1000,(bltdpt,a6)
- move.w #3,d0
- move.w d0,d1
- movem.w d0-d1,(bltsizv,a6)
- move.w #0,(bltafwm,a6)
- rts
-
- _bltwait_15 move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000000111111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #-16-6,(bltdmod,a6)
- move.l #$1000,(bltdpt,a6)
- moveq #0,d0
- move.w #3,d1
- move.w d1,d2
- movem.w d0-d2,(bltsize+2,a6)
- move.w #0,(bltafwm,a6)
- rts
- _bltwait_16 move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000000111111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #-16-6,(bltdmod,a6)
- move.l #$1000,(bltdpt,a6)
- move.l #(3*64+3)<<16,d0
- move.l #$30003,d1
- movem.l d0-d1,(bltsize,a6)
- move.w #0,(bltafwm,a6)
- rts
-
- ;======================================================================
-
- _copcon_0 st (copcon+1,a6) ;a bit senseless because byte
- ;access is anyway prohibited
- rts
- _copcon_1 move.w #-1,(copcon,a6)
- rts
- _copcon_2 move.l #-1,(copcon-2,a6)
- rts
- _copcon_3 move.l #-1,(copcon,a6)
- rts
- _copcon_4 move.w #-1,(copcon,a6)
- move.l #-1,(copcon-2,a6)
- move.l #-1,(copcon,a6)
- rts
-
- ;======================================================================
-
- _cia_1 bsr _savreg
- bchg #CIAB_LED,_ciaa+ciapra
- bsr _chkreg
- rts
- _cia_2 bclr #CIAB_OVERLAY,_ciaa+ciapra
- rts
- _cia_3 bset #CIAB_OVERLAY,_ciaa+ciapra
- rts
- _cia_4 bclr #CIAB_GAMEPORT1,_ciaa+ciaddra
- rts
- _cia_5 bset #CIAB_GAMEPORT1,_ciaa+ciaddra
- rts
- _cia_6 bset #CIACRBB_ALARM,_ciaa+ciacrb
- st _ciaa+ciatodlow
- rts
- _cia_7 bclr #CIACRBB_ALARM,_ciaa+ciacrb
- st _ciaa+ciatodlow
- rts
- _cia_8 bset #CIACRBB_ALARM,_ciaa+ciacrb
- addq.b #1,_ciaa+ciatodlow
- rts
- _cia_9 bsr _savreg
- st _ciaa+ciaicr
- bsr _chkreg
- rts
- _cia_10 bsr _savreg
- sf _ciaa+ciaicr
- bsr _chkreg
- rts
- _cia_11 bsr _savreg
- bset #CIAB_DSKSEL3,_ciab+ciaprb
- bsr _chkreg
- rts
- _cia_12 bsr _savreg
- bclr #CIAB_DSKSEL3,_ciab+ciaprb
- bsr _chkreg
- rts
- _cia_13 bset #CIAB_COMDTR,_ciab+ciaddra
- rts
- _cia_14 bclr #CIAB_COMDTR,_ciab+ciaddra
- rts
- _cia_15 bset #CIAB_DSKSEL3,_ciab+ciaddrb
- rts
- _cia_16 bclr #CIAB_DSKSEL3,_ciab+ciaddrb
- rts
- _cia_17 bsr _savreg
- st _ciab+ciaicr
- bsr _chkreg
- rts
- _cia_18 bsr _savreg
- sf _ciab+ciaicr
- bsr _chkreg
- rts
-
- ;======================================================================
-
- _cust_1 tst.b (adkconr,a6)
- rts
- _cust_2 tst.w (intreqr,a6)
- rts
- _cust_3 tst.l (vposr,a6)
- rts
- _cust_4 tst.l (intreqr,a6)
- rts
- _cust_5 tst.w (bltcon0,a6)
- rts
- _cust_8 clr.b (dmaconr,a6)
- rts
- _cust_9 clr.w (dmaconr,a6)
- rts
- _cust_10 clr.l (dmaconr,a6)
- rts
- _cust_14 clr.w (fmode,a6)
- rts
- _cust_16 tst.w (deniseid,a6)
- rts
- _cust_18 clr.b (aud0+ac_vol,a6)
- rts
- _cust_19 clr.b (aud0+ac_vol+1,a6)
- rts
-
- _cust_20 move.l (a7)+,a0
- move #0,sr
- bsr _savreg
- pea 0
- move.l (a7)+,(bltapt,a6)
- bsr _chkreg
- jmp (a0)
- _cust_21 bsr _savreg
- pea 0
- move.l (a7)+,(bltapt,a6)
- bsr _chkreg
- rts
-
- _cust_22 move.l #BASEMEM,(bplpt,a6)
- rts
- _cust_24 move.w #(BASEMEM+$1000)>>16,(bplpt+7*4,a6)
- rts
-
- _cust_25 move.w #0,(bplcon0,a6)
- rts
- _cust_26 move.w #1,(bplcon0,a6)
- rts
- _cust_27 move.l #$10000,(bplcon0,a6)
- rts
- _cust_28 move.w #$8000,(bplcon2,a6)
- rts
- _cust_29 move.l #$8000,(bplcon1,a6)
- rts
- _cust_30 move.l #$00000,(bplcon0-2,a6)
- rts
-
- _cust_34 move.w #DMAF_SETCLR|DMAF_BLITHOG,(dmacon,a6)
- rts
-
- _cust_36 move.w #1,(copcon,a6)
- rts
- _cust_37 move.l #1,(copcon-2,a6)
- rts
- _cust_38 move.l #$10000,(copcon,a6)
- rts
-
- _cust_42 move.w #3,(bltsizv,a6)
- rts
- _cust_46 move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000000111111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #-16-6,(bltdmod,a6)
- move.l #$1000,(bltdpt,a6)
- move.w #3,(bltsizh,a6)
- rts
- _cust_47 move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000000111111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #-16-6,(bltdmod,a6)
- move.l #$1000,(bltdpt,a6)
- move.l #(3*64+3)<<16,(bltsize,a6) ;3 lines, 3 words
- rts
- _cust_48 move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER,(dmacon,a6)
- move.w #%0000000111111111,(bltcon0,a6)
- move.w #%0000000000000010,(bltcon1,a6)
- move.w #-16-6,(bltdmod,a6)
- move.l #$1000,(bltdpt,a6)
- move.w #3,(bltsizv,a6)
- move.l #3<<16,(bltsizh,a6)
- rts
-
- ;======================================================================
-
- COPLC = $5000
-
- _cop_0 lea COPLC,a0
- move.l a0,(cop1lc,a6)
- move.l #$00a41111,(a0)+
- move.l #$0100ffff,(a0)+ ;bplcon0
- move.l #$0104ffff,(a0)+ ;bplcon2
- move.l #BASEMEM-1,d0
- move.w #bplpt+2,(a0)+
- move.w d0,(a0)+
- move.w #bplpt,(a0)+
- swap d0
- move.w d0,(a0)+
- move.l #$0082<<16+COPLC+$1000,(a0)+
- move.l #$0088ffff,(a0)+ ;copjmp1
- move.l #$02001111,(a0) ;illegal
- lea COPLC+$1000,a0
- move.l #$00a41111,(a0)+
- move.l #$0086<<16+COPLC+$2000,(a0)+
- move.l #$008affff,(a0)+ ;copjmp2
- move.l #$02001111,(a0) ;illegal
- lea COPLC+$2000,a0
- move.l #$0088ffff,(a0)+ ;copjmp1
- move.l #$02001111,(a0) ;illegal
- bsr _savreg
- move.w #DMAF_SETCLR|DMAF_COPPER,(dmacon,a6)
- bsr _chkreg
- rts
-
- _cop_1 lea BASEMEM-4,a0
- move.l a0,(cop1lc,a6)
- move.l #$00401111,(a0)+
- move.w #DMAF_SETCLR|DMAF_COPPER,(dmacon,a6)
- rts
-
- _cop_2 lea COPLC,a0
- move.l a0,(cop1lc,a6)
- move.l #$02001111,(a0)+
- move.l #-2,(a0)+
- move.w #DMAF_SETCLR|DMAF_COPPER,(dmacon,a6)
- rts
-
- _cop_3 lea COPLC,a0
- move.l a0,(cop1lc,a6)
- move.l #$01000000,(a0)+ ;bplcon0
- move.l #-2,(a0)+
- move.w #DMAF_SETCLR|DMAF_COPPER,(dmacon,a6)
- rts
-
- _cop_6 lea COPLC,a0
- move.l a0,(cop1lc,a6)
- move.l #$01000001,(a0)+ ;bplcon0
- move.l #-2,(a0)+
- move.w #DMAF_SETCLR|DMAF_COPPER,(dmacon,a6)
- rts
-
- _cop_8 lea COPLC,a0
- move.l a0,(cop1lc,a6)
- move.l #$01048000,(a0)+ ;bplcon2
- move.l #-2,(a0)+
- move.w #DMAF_SETCLR|DMAF_COPPER,(dmacon,a6)
- rts
-
- _cop_10 lea COPLC,a0
- move.l a0,(cop1lc,a6)
- move.l #BASEMEM,d0
- move.w #bplpt+2,(a0)+
- move.w d0,(a0)+
- move.w #bplpt,(a0)+
- swap d0
- move.w d0,(a0)+
- move.l #-2,(a0)+
- move.w #DMAF_SETCLR|DMAF_COPPER,(dmacon,a6)
- rts
-
- _cop_12 lea COPLC,a0
- move.l a0,(cop1lc,a6)
- move.l #-2,(a0)+
- move.w #DMAF_SETCLR|DMAF_COPPER,(dmacon,a6)
- move.l a0,a1
- move.l #$02001111,(a0)+
- move.l #-2,(a0)+
- move.l a1,(cop1lc,a6)
- rts
-
- _cop_13 lea COPLC,a0
- move.l a0,(cop1lc,a6)
- move.l #-2,(a0)+
- move.w #DMAF_SETCLR|DMAF_COPPER,(dmacon,a6)
- move.l a0,a1
- move.l #$02001111,(a0)+
- move.l #-2,(a0)+
- move.l a1,(cop2lc,a6)
- rts
-
- ;======================================================================
-
- _af_inst_0 jmp $a0000000 ;raise instruction stream fault
-
- ; the following verifies that instructions are valid to execute also
- ; on protected areas
-
- _af_inst_1 sub.l a2,a2
- bra _af_inst
-
- _af_inst_2 lea $1000,a2
- bra _af_inst
-
- ; the handler for the 68030 combines the access on a fault to a longword
- ; which would be outside BASEMEM if BASEMEM-2 is used
-
- _af_inst_330 lea BASEMEM-4,a2
- bra _af_inst
- _af_inst_360 lea BASEMEM-2,a2
- bra _af_inst
-
- _af_inst_4 move.l _expmem,a2
- bra _af_inst
-
- _af_inst_5 move.l _expmem,a2
- add.l #$100,a2
- bra _af_inst
-
- _af_inst_630 move.l _expmem,a2
- add.l #EXPMEM-4,a2
- bra _af_inst
- _af_inst_660 move.l _expmem,a2
- add.l #EXPMEM-2,a2
-
- _af_inst move.w #$4e75,(a2) ;rts
- jsr (resload_FlushCache,a4)
- moveq #2,d0
- move.l a2,a0
- jsr (resload_ProtectRead,a4)
- bsr _savreg
- jsr (a2) ;must succed
- bsr _chkreg
- clr.w (a2) ;must succed
- bsr _chkreg
- tst.w (a2) ;must fail
- rts
-
- ; that must give address error
-
- _af_inst_9 jmp 1
-
- ;======================================================================
-
- _af_smc_ok lea $1000,a2
- move.w #$4e75,(a2) ;rts
- jsr (resload_FlushCache,a4)
- moveq #4,d0
- move.l a2,a0
- jsr (resload_ProtectSMC,a4)
- bsr _savreg
- jsr (a2)
- bsr _chkreg
- clr.l (a2)
- bsr _chkreg
- tst.l (a2)
- bsr _chkreg
- rts
-
- _af_smc_1 lea $1000,a2
- move.w #$4e75,d2 ;rts
- move.w d2,(a2)+
- move.w d2,(a2)+
- move.w d2,(a2)
- jsr (resload_FlushCache,a4)
- moveq #2,d0
- lea (-2,a2),a0
- jsr (resload_ProtectSMC,a4)
- or.w d2,(a2)
- or.w d2,-(a2)
- or.w d2,-(a2)
- jsr (a2)
- jsr (4,a2)
- jmp (2,a2)
-
- _af_smc_ba1 moveq #4,d0
- lea $1000,a0
- jsr (resload_ProtectRead,a4)
- moveq #4,d0
- lea $1000,a0
- jmp (resload_ProtectSMC,a4)
- _af_smc_ba2 moveq #4,d0
- lea $1000,a0
- jsr (resload_ProtectSMC,a4)
- moveq #4,d0
- lea $1000,a0
- jmp (resload_ProtectRead,a4)
-
- ;======================================================================
-
- AF_CBAF_ADR = $1000
-
- _af_cbaf_0 lea _af_cbaf_fail,a3
- bsr _af_cbaf_init
- .inst tst.b (a2)
- rts
-
- _af_cbaf_1 lea .cbaf,a3
- bsr _af_cbaf_init
- .inst tst.b (a2)
- rts
- .cbaf cmp.l #0,d0
- bne _af_cbaf_fail
- cmp.l #1,d1
- bne _af_cbaf_fail
- pea .inst
- cmp.l (a7)+,a0
- bne _af_cbaf_fail
- cmp.l #AF_CBAF_ADR,a1
- bne _af_cbaf_fail
- moveq #-1,d0
- rts
-
- _af_cbaf_2 lea .cbaf,a3
- bsr _af_cbaf_init
- .inst clr.w (a2)
- rts
- .cbaf cmp.l #2,d0
- bne _af_cbaf_fail
- cmp.l #2,d1
- bne _af_cbaf_fail
- pea .inst
- cmp.l (a7)+,a0
- bne _af_cbaf_fail
- cmp.l #AF_CBAF_ADR,a1
- bne _af_cbaf_fail
- moveq #-1,d0
- rts
-
- _af_cbaf_3 lea .cbaf,a3
- bsr _af_cbaf_init
- .inst addq.l #1,(a2)
- rts
- .cbaf cmp.l #1,d0
- bne _af_cbaf_fail
- cmp.l #4,d1
- bne _af_cbaf_fail
- pea .inst
- cmp.l (a7)+,a0
- bne _af_cbaf_fail
- cmp.l #AF_CBAF_ADR,a1
- bne _af_cbaf_fail
- moveq #-1,d0
- rts
-
- _af_cbaf_4 lea .cbaf,a3
- bsr _af_cbaf_init
- .inst tst.b (a2)
- rts
- .cbaf cmp.l #0,d0
- bne _af_cbaf_fail
- cmp.l #1,d1
- bne _af_cbaf_fail
- pea .inst
- cmp.l (a7)+,a0
- bne _af_cbaf_fail
- cmp.l #AF_CBAF_ADR,a1
- bne _af_cbaf_fail
- moveq #-1,d0
- rts
-
- _af_cbaf_5 lea .cbaf,a3
- bsr _af_cbaf_init
- .inst_pre move.w #$9876,(a2)
- .inst_post rts
- .cbaf movem.l d0-a7,$100
- cmp.l #2,d0
- bne _af_cbaf_fail
- cmp.l #2,d1
- bne _af_cbaf_fail
- pea .inst_post
- cmp.l (a7)+,a0
- bne _af_cbaf_fail
- cmp.l #AF_CBAF_ADR,a1
- bne _af_cbaf_fail
- cmp.w #$9876,(a2)
- bne _af_cbaf_fail
- moveq #-1,d0
- rts
-
- _af_cbaf_6 lea .cbaf,a3
- bsr _af_cbaf_init
- .inst_pre addq.l #1,(a2)
- .inst_post rts
- .cbaf movem.l d0-a7,$100
- cmp.l #0,d0
- beq .read
- cmp.l #2,d0
- bne _af_cbaf_fail
- .write cmp.l #4,d1
- bne _af_cbaf_fail
- pea .inst_post
- cmp.l (a7)+,a0
- bne _af_cbaf_fail
- cmp.l #AF_CBAF_ADR,a1
- bne _af_cbaf_fail
- cmp.l #$40414244,(a2)
- bne _af_cbaf_fail
- moveq #-1,d0
- rts
- .read cmp.l #4,d1
- bne _af_cbaf_fail
- pea .inst_pre
- cmp.l (a7)+,a0
- bne _af_cbaf_fail
- cmp.l #AF_CBAF_ADR,a1
- bne _af_cbaf_fail
- moveq #-1,d0
- rts
-
- _af_cbaf_fail moveq #0,d0
- rts
-
- _af_cbaf_init lea AF_CBAF_ADR,a2
- move.l #$40414243,(a2) ;test value (68030)
- moveq #4,d0
- move.l a2,a0
- jsr (resload_ProtectReadWrite,a4)
- clr.l -(a7)
- pea (a3)
- pea WHDLTAG_CBAF_SET
- move.l a7,a0
- jsr (resload_Control,a4)
- add.w #12,a7
- rts
-
- ;======================================================================
-
- _af_prot_rlok lea $1100,a2
- moveq #4,d0
- move.l a2,a0
- jsr (resload_ProtectRead,a4)
- moveq #4,d0
- lea (8,a2),a0
- add.l d0,a2
- jsr (resload_ProtectRead,a4)
- tst.l (a2)
- clr.l (a2)
- addq.l #1,(a2)
- rts
- _af_prot_wlok lea $1100,a2
- moveq #4,d0
- move.l a2,a0
- jsr (resload_ProtectWrite,a4)
- moveq #4,d0
- lea (8,a2),a0
- add.l d0,a2
- jsr (resload_ProtectWrite,a4)
- tst.l (a2)
- clr.l (a2)
- addq.l #1,(a2)
- rts
- _af_prot_rwok lea $1100,a2
- moveq #2,d0
- move.l a2,a0
- jsr (resload_ProtectRead,a4)
- moveq #2,d0
- lea (4,a2),a0
- add.l d0,a2
- jsr (resload_ProtectRead,a4)
- tst.w (a2)
- clr.w (a2)
- addq.w #1,(a2)
- rts
- _af_prot_wwok lea $1100,a2
- moveq #2,d0
- move.l a2,a0
- jsr (resload_ProtectWrite,a4)
- moveq #2,d0
- lea (4,a2),a0
- add.l d0,a2
- jsr (resload_ProtectWrite,a4)
- tst.w (a2)
- clr.w (a2)
- addq.w #1,(a2)
- rts
- _af_prot_rbok lea $1100,a2
- moveq #1,d0
- move.l a2,a0
- jsr (resload_ProtectRead,a4)
- moveq #1,d0
- lea (2,a2),a0
- add.l d0,a2
- jsr (resload_ProtectRead,a4)
- tst.b (a2)
- clr.b (a2)
- addq.b #1,(a2)
- rts
- _af_prot_wbok lea $1100,a2
- moveq #1,d0
- move.l a2,a0
- jsr (resload_ProtectWrite,a4)
- moveq #1,d0
- lea (2,a2),a0
- add.l d0,a2
- jsr (resload_ProtectWrite,a4)
- bsr _savreg
- tst.b (a2)
- clr.b (a2)
- addq.b #1,(a2)
- bsr _chkreg
- rts
-
- _af_prot_rll lea $1100,a2
- moveq #4,d0
- move.l a2,a0
- jsr (resload_ProtectRead,a4)
- tst.l (-3,a2)
- rts
- _af_prot_rlu lea $1100,a2
- moveq #4,d0
- move.l a2,a0
- jsr (resload_ProtectRead,a4)
- tst.l (3,a2)
- rts
- _af_prot_wll lea $1100,a2
- moveq #4,d0
- move.l a2,a0
- jsr (resload_ProtectWrite,a4)
- clr.l (-3,a2)
- rts
- _af_prot_wlu lea $1100,a2
- moveq #4,d0
- move.l a2,a0
- jsr (resload_ProtectWrite,a4)
- clr.l (3,a2)
- rts
- _af_prot_mll lea $1100,a2
- moveq #4,d0
- move.l a2,a0
- jsr (resload_ProtectReadWrite,a4)
- addq.l #1,(-3,a2)
- rts
- _af_prot_mlu lea $1100,a2
- moveq #4,d0
- move.l a2,a0
- jsr (resload_ProtectReadWrite,a4)
- addq.l #1,(3,a2)
- rts
-
- _af_prot_rwl lea $1100,a2
- moveq #4,d0
- move.l a2,a0
- jsr (resload_ProtectRead,a4)
- tst.w (-1,a2)
- rts
- _af_prot_rwu lea $1100,a2
- moveq #4,d0
- move.l a2,a0
- jsr (resload_ProtectRead,a4)
- tst.w (3,a2)
- rts
- _af_prot_wwl lea $1100,a2
- moveq #4,d0
- move.l a2,a0
- jsr (resload_ProtectWrite,a4)
- clr.w (-1,a2)
- rts
- _af_prot_wwu lea $1100,a2
- moveq #4,d0
- move.l a2,a0
- jsr (resload_ProtectWrite,a4)
- clr.w (3,a2)
- rts
- _af_prot_mwl lea $1100,a2
- moveq #4,d0
- move.l a2,a0
- jsr (resload_ProtectReadWrite,a4)
- addq.w #1,(-1,a2)
- rts
- _af_prot_mwu lea $1100,a2
- moveq #4,d0
- move.l a2,a0
- jsr (resload_ProtectReadWrite,a4)
- addq.w #1,(3,a2)
- rts
-
- _af_prot_rbl lea $1100,a2
- moveq #4,d0
- move.l a2,a0
- jsr (resload_ProtectRead,a4)
- tst.b (a2)
- rts
- _af_prot_rbu lea $1100,a2
- moveq #4,d0
- move.l a2,a0
- jsr (resload_ProtectRead,a4)
- tst.b (3,a2)
- rts
- _af_prot_wbl lea $1100,a2
- moveq #4,d0
- move.l a2,a0
- jsr (resload_ProtectWrite,a4)
- clr.b (a2)
- rts
- _af_prot_wbu lea $1100,a2
- moveq #4,d0
- move.l a2,a0
- jsr (resload_ProtectWrite,a4)
- clr.b (3,a2)
- rts
- _af_prot_mbl lea $1100,a2
- moveq #4,d0
- move.l a2,a0
- jsr (resload_ProtectReadWrite,a4)
- addq.b #1,(a2)
- rts
- _af_prot_mbu lea $1100,a2
- moveq #4,d0
- move.l a2,a0
- jsr (resload_ProtectReadWrite,a4)
- addq.b #1,(3,a2)
- rts
-
- ; cas/tas instruction is always treated as RWM and WriteProtection
- ; will cause also the read to fail, so on 68030 fault will be
- ; always Read
-
- _af_prot_tas lea $1100,a2
- moveq #1,d0
- move.l a2,a0
- jsr (resload_ProtectRead,a4)
- tas (a2)
- rts
- _af_prot_cas lea $1100,a2
- moveq #4,d0
- move.l a2,a0
- jsr (resload_ProtectWrite,a4)
- cas.l d0,d1,(a2)
- rts
-
- ;======================================================================
- ; support functions
- ;
- ; wait for blitter finish
-
- _bw BLITWAIT
- rts
-
- ; check if registers has been modified
-
- _savreg movem.l d0-a7,SAVREG
- rts
-
- _chkreg movem.l d0-a7,SAVREG+16*4
- lea SAVREG,a0
- lea (16*4,a0),a1
- moveq #15,d0
- .cmp cmp.l (a0)+,(a1)+
- dbne d0,.cmp
- bne .fail
- movem.l (a0),d0-a1
- rts
- .fail pea .failmsg
- pea TDREASON_FAILMSG
- jmp (resload_Abort,a4)
- .failmsg dc.b "registers are modified, check registers",10
- sprintx "at $%lx before and $%lx after",SAVREG,SAVREG+16*4
- dc.b 0
-
- ;======================================================================
-
-
- IFEQ 1
- IFEQ MODE-BUS
-
- ;ciaa
- ; bset #0,$bfe001 ;overlay
- ; bclr #0,$bfe201 ;overlay
- move.b #$83,$bfed01 ;icm
- bset #7,$bfef01 ;crb - alarm
- move.b #$30,$bfea01 ;msb
- move.b #$20,$bfe901
- move.b #$10,$bfe801 ;lsb
- ; clr.b $bfeb01 ;non existent
- ; clr.b $bfe000 ;wrong address
- ; clr.w $bfe001 ;wrong size
-
- ;ciab
- ; bclr #0,$bfd100 ;step
- ; bclr #7,$bfd100 ;motor
- move.b #$84,$bfdd00 ;icm
- bset #7,$bfdf00 ;crb - alarm
- move.b #$35,$bfda00 ;msb
- move.b #$25,$bfd900
- move.b #$15,$bfd800 ;lsb
-
- ; move #$2304,sr
- ; move.b d0,$dff0b8
- ; bra _exit
-
- ;blitz
- ; moveq #7,d0
- ; movec d0,sfc
- ; movec d0,dfc
- ; moves.w d0,$100
-
- ; bset #1,_custom+copjmp1
-
- ENDC
- IFEQ MODE-ILLEGAL
- lea $1000,a0
- movep (100,a0),d0
- illegal
- ENDC
- IFEQ MODE-ZERO
- divu #0,d0
- ENDC
- IFEQ MODE-PRIV
- move #0,sr
- move #100,sr
- ENDC
- IFEQ MODE-TRACE
- or #$8000,sr
- ENDC
- IFEQ MODE-AUTOVEC
- move.w #INTF_SETCLR|INTF_INTEN|INTF_VERTB,(intena,a6)
- move.w #INTF_VERTB,(intreq,a6)
- blitz
- ENDC
- IFEQ MODE-TRAP
- trap #0
- ENDC
- IFEQ MODE-FMODE
- jsr (resload_CRC16,a0)
- ENDC
- IFEQ MODE-BADSSP
- lea -20000,a7
- move.l $10,a0
- jmp (a0)
- ENDC
- IFEQ MODE-AGAW
- lea $1000,a0
- move.l a0,(cop1lc,a6)
- move.w #bplcon2,(a0)+
- move.w #%000000100000,(a0)+
- move.l #-2,(a0)+
- tst.w (copjmp1,a6)
- move.w #DMAF_SETCLR|DMAF_COPPER,(dmacon,a6)
- move.w #%1111111,(bplcon2,a6)
- move.w #0,(clxcon2,a6)
- ENDC
- IFEQ MODE-AGAR
- move.w (hhposr,a6),d0
- ENDC
- IFEQ MODE-SNOOPBPLPT
- move.l #0,(bplpt,a6)
- move.w #$8,(bplpt,a6)
- move.w #$fff,(bplpt+2,a6)
- ENDC
- IFEQ MODE-FILE
- lea $100,a0
- lea $1c00,a1
- moveq #0,d0
- .cp move.l d0,(a0)+
- addq.l #1,d0
- cmp.l a0,a1
- bne .cp
-
- moveq #0,d0 ;size
- ; move.l #$1000,d0
- move.l #$3000,d1 ;offset
- lea (.name),a0 ;name
- lea $1900,a1 ;source/destination
- ; jsr (resload_LoadFile,a4)
- ; jsr (resload_LoadFileDecrunch,a4)
- jsr (resload_LoadFileOffset,a4)
- ; jsr (resload_SaveFile,a4)
- ; jsr (resload_SaveFileOffset,a4)
- bra _debug
- .name dc.b "fuck:a",0,0
- ENDC
-
- ;======================================================================
-
- IFEQ MODE-OCLEN
-
- lea ($100),a0
- moveq #15,d0
- .clr clr.l (a0)+
- dbf d0,.clr
-
- lea ($1000),a1 ;A1 = array
- patch $24,_trace
-
- move.w #$2700,sr
-
- _trace cmp.l #
-
- ENDC
-
- ;======================================================================
-
- IFEQ MODE-OSEMU
- include lvo/exec.i
- move.l #_LVOAllocMem,-(a7)
- pea _exec
- move.l #TDREASON_OSEMUFAIL,-(a7)
- bra _end
-
- _exec dc.b "exec.library",0
- EVEN
- ENDC
-
- ;======================================================================
-
- IFEQ MODE-TAGS
- move.l #TDREASON_MUSTNTSC,-(a7)
- bra _end
-
- clr.l -(a7)
- pea _wb
- move.l #WHDLTAG_CBSWITCH_SET,-(a7)
- move.l a7,a0
- jsr (resload_Control,a4)
-
- lea _dummy,a0
- ; jsr (resload_GetFileSize,a4)
-
- bra _exit
-
- _wb blitz
- jmp (a0)
- _dummy dc.b "dummy",0
-
- EVEN
- ENDC
-
- ;======================================================================
-
- IFEQ MODE-PATCH
-
- lea _p1,a0
- move.l #$2000,a1
- jsr (resload_PatchSeg,a4)
- jsr (resload_Patch,a4)
-
- bra _debug
-
- _p1 PL_START
- PL_R 1
- PL_P $10,_exit
- PL_PS $20,_debug
- PL_S $30,16
- PL_I $40
- PL_B $50,$bb
- PL_W $60,$1111
- PL_L $70,$33333333
- PL_A $80,$800
- PL_PA $90,_expmem
- PL_NOP $a0,$20
- PL_PSS $100,_p1,6
- PL_NEXT _p2
-
- _p2 PL_START
- PL_PSS $120,_p2,2
- PL_STR $170,<Scheisse!>
- PL_DATA $160,.e-.a
- .a dc.b 1,2,3,4,5
- .e EVEN
- PL_AB $130,$11
- PL_AW $140,$1111
- PL_AL $150,$11111111
- PL_R $80000
- PL_END
-
- ENDC
-
- ;======================================================================
-
- IFEQ MODE-MUSTREG
- move #0,sr
- pea TDREASON_MUSTREG
- bra _end
- ENDC
-
- ;======================================================================
-
- IFEQ MODE-DELETE
- lea _1,a0
- jsr (resload_DeleteFile,a4)
- bra _exit
- _1 dc.b "test",0
- EVEN
- ENDC
-
- ;======================================================================
-
- IFEQ MODE-CBAF
-
- clr.l -(a7)
- clr.l -(a7)
- move.l #WHDLTAG_Private4,-(a7) ;deprotect whdload
- pea _1
- move.l #WHDLTAG_CBAF_SET,-(a7)
- move.l a7,a0
- jsr (resload_Control,a4)
-
- clr.w $200000
-
- bra _exit
-
- _1 cmp.w #2,d1
- bne .2
- lea $100,a1 ;address
- lea _1,a2 ;data
- moveq #1,d0
- rts
-
- .2
-
- .term moveq #0,d0
- rts
-
- ENDC
-
- ;======================================================================
-
- IFEQ MODE-RELOC
-
- clr.l -(a7)
- clr.l -(a7)
- move.l #WHDLTAG_Private4,-(a7) ;deprotect whdload
- move.l a7,a0
- jsr (resload_Control,a4)
- lea .name,a0
- lea $400,a1
- jsr (resload_LoadFile,a4)
- lea $400,a0
- lea .tags,a1
- jsr (resload_Relocate,a4)
-
- bra _debug
-
- .tags ; dc.l WHDLTAG_FASTPTR,$60000
- ; dc.l WHDLTAG_CHIPPTR,$30000
- dc.l WHDLTAG_ALIGN,$10000
- dc.l 0
- .name dc.b "c:dms",0
- EVEN
- ENDC
-
- ;======================================================================
-
- IFEQ MODE-CACHE
-
- move.l #100,d0
- moveq #0,d1
- lea $100,a0
- jsr (resload_GetCustom,a4)
-
-
- move.l #CACRF_EnableI,d0
- move.l #CACRF_EnableD,d1
- jsr (resload_SetCACR,a4)
-
- bra _debug
-
- ENDC
-
- ;======================================================================
-
- IFEQ MODE-OVERLAY
-
- move.w #DMAF_SETCLR|DMAF_BLITTER|DMAF_MASTER,_custom+dmacon
-
- move.l #$300,$dff054
- move.w #$41,_custom+bltsize
- bra _debug
-
- moveq #0,d0
- moveq #0,d1
- move.l #$41,d2
-
- movem.l d0/d2,$dff052
- ; movem.w d0-d2,$dff054
-
- ;opcodes to force fault
- move.w #0,_custom+bltcon0
- move.l #0,_custom+bltdpt
- move.w #$41,_custom+bltsize
-
- ; tst.b _custom+dmaconr
-
- bra _debug
-
- ;------.
-
- lea .1,a0
- jsr (resload_GetFileSizeDec,a4)
- move.l d0,-(a7)
- jmp (resload_Abort,a4)
- .1 dc.b "bus.rnc",0
-
- ; bset #0,_ciaa
- ; bclr #0,_ciaa+ciaddra
-
- ; bclr #CIAB_DSKMOTOR,_ciab+ciaprb
- ; bclr #CIAB_DSKSTEP,_ciab+ciaprb
- ; bset #0,_ciab+ciaddra
- ; bclr #0,_ciab+ciaddrb
-
- bset #CIACRBB_ALARM,(_ciaa+ciacrb)
- move.b #$44,_ciaa+ciatodlow
-
- ; move.l #$100000,_custom+cop1lc
-
- move.l #$2000000,_custom+bplcon0
-
- bra _debug
-
- ENDC
- ENDC
-
- ;======================================================================
-
- END
-